iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
Vue.js

用 Nuxt Content 搭配 Obsidian 建立自己的 Digital Garden系列 第 26

Icon:增加圖示讓視覺更多元

  • 分享至 

  • xImage
  •  

在實作關燈模式的時候,是透過其他現成已經做好的 svg 來使用,但這樣其實很難去管理,當 icon 一多時,就更難去識別了。如果這時有一個方法能讓我們向使用 FontAwesome 一樣建立圖示,那就很方便了。

其實 Nuxt 就有一個名為 Icon Module 的 Module 能夠做到這件事,我們就來以實作預設佈局頁尾的社交網路圖示來作為示範吧!

首先安裝該 Module:

$ pnpm install --save-dev nuxt-icon

並將其加入 @/nuxt.config.ts 中的設定中:

export default defineNuxtConfig({
  modules: [
    '@nuxt/content',
    '@nuxtjs/color-mode',
    '@nuxtjs/tailwindcss',
    'nuxt-icon', // Add this line
  ],
})

這樣我們就可以使用 <Icon /> 來建立圖示了,例如:

<Icon name="uil:github" color="black" />
<Icon name="i-uil-github" color="black" />

其中的 name 就是向 FontAwesome 那樣的圖示識別碼,可以到 Icônes 去搜尋與使用;color 則可以為其設定顏色,亦可透過 CSS 設定。

接著我們就可以到 @/TheFooter.vue 中加入相關程式碼:

<template>
  <footer>
    <div class="flex flex-col items-center">
      ...
      <div>
        <SocialIcon name="mdi:email" href="dev@fntsr.tw" />
        <SocialIcon name="mdi:github" href="https://github.com/fntsrlike" />
        <SocialIcon name="mdi:linkedin" href="https://www.linkedin.com/in/fntsrlike/" />
      </div>
    </div>
  </footer>
</template>

為了不要有太多重複的程式碼,這邊再將 <Icon /> 進一步做了包裝,建立一個 <SocialIcon />

<template>
<a target="_blank" :href="href" 
  class="mx-1 text-gray-700 hover:text-blue-500 dark:text-gray-200 dark:hover:text-blue-400">
  <Icon :name="name" class="fill-current"/>
</a>
</template>
<script setup lang="ts">
defineProps({
  name: {
    type: String,
    default: '',
  },
  href: {
    type: String,
    default: '',
  }
})
</script>

如此一來大功告成啦!


上一篇
增加關燈模式,讓閱讀更加護眼
下一篇
為每一頁分頁標題都加上網站名稱
系列文
用 Nuxt Content 搭配 Obsidian 建立自己的 Digital Garden30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言